#ifndef REGISTERDIALOG_H
#define REGISTERDIALOG_H

#include <QDialog>
#include "global.h"
namespace Ui {
class RegisterDialog;
}

class RegisterDialog : public QDialog
{
    Q_OBJECT

public:
    explicit RegisterDialog(QWidget *parent = nullptr);
    ~RegisterDialog();


signals:
    void back();
    void sigSwitchLogin();
private slots:
    void on_pushButton_get_validte_code_clicked();
    void slot_reg_mod_finish(ReqId id,
                             QString res,
                             ErrorCodes err);

    void on_pushButton_register_ok_clicked();

    void on_btn_return_login_clicked();

private:
    QMap<TipErr, QString> _tip_errs;
    Ui::RegisterDialog *ui;
    void showTip(const char* msg,bool error);

    void initHttpHandlers();
    bool checkUserValid();
    bool checkConfirmValid();
    bool checkPassValid();
    void changeTipPage();


    bool checkEmailValid();

    bool checkVarifyValid();
    void AddTipErr(TipErr te, QString tips);

    void DelTipErr(TipErr te);
    //不同的请求id，持有他们对应的处理函数
    QMap<ReqId,std::function<void(const QJsonObject&)>> _hanlders;

    QTimer *_countdown_timer;
    int _countdown;
};

#endif // REGISTERDIALOG_H
